package com.blog.mapper;

import com.blog.dto.MetaDto;
import com.blog.dto.cond.MetaCondition;
import com.blog.model.Meta;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 项目持久层
 *
 * @author wmb
 *
 * @since 2021-2-8
 */
@Mapper
@Repository("metaMapper")
public interface MetaMapper {
    /**
     * 根据类型获取meta数量
     *
     * @param type
     *
     * @return
     */
    Long getMetasCountByType(String type);

    /**
     * 根据条件查询
     *
     * @param metaCondition
     *
     * @return
     */
    List<Meta> getMetasByMetaCondition(MetaCondition metaCondition);

    /**
     * 添加项目
     *
     * @param meta
     *
     * @return
     */
    void saveMeta(Meta meta);

    /**
     * 根据sql查询
     *
     * @param paramMap
     *
     * @return
     */
    List<MetaDto> selectFromSql(Map<String, Object> paramMap);

    /**
     * 根据编号获取项目
     *
     * @param id
     *
     * @return
     */
    Meta getMetaById(@Param("mid") Integer id);

    /**
     * 更新项目
     *
     * @param meta
     *
     * @return
     */
    void updateMeta(Meta meta);

    /**
     * 删除项目
     *
     * @param id
     *
     * @return
     */
    void deleteMetaById(Integer id);
}
